
#include "test_album.h"
namespace ct {
class B {
public:
  virtual ~B() { }
  int b;
};

class D1 : public B {
  int d1;
};

class D2 : public B {
public:
  int d2;
};

class B2 {
public:
  int b2;
};

class D3 : public B2, public B {
public:
  int d3;
};

void CastTest::Run(int argc, char *argv[]) {
  D2 d2;
  D1 d1;
  B *pbd1 = &d1;
  B *pbd2 = &d2;
  printf("1: %p, %p\n", pbd1, &d1);
  printf("2: %p, %p\n", pbd2, &d2);

  D3 d3;
  B2 *pb2d3 = &d3;
  B *pbd3 = &d3;
  printf("3: %p, %p, %p\n", pb2d3, pbd3, &d3);
  D2 *pd2 = dynamic_cast<D2*>(pbd1); // NULL
  printf("4: %p\n", pd2);
}
} // ct
